挂载NFS协议文件系统

本文介绍如何通过阿里云Linux ECS实例挂载NAS NFS协议文件系统,以实现多个云服务器共享访问文件系统的目的。

前提条件

  • 已创建ECS(Linux)实例。具体操作,请参见创建ECS实例

  • 已在与ECS相同地域的同一个VPC下创建NAS,并获取到NAS挂载点地址。具体操作,请参见创建文件系统

步骤一:安装NFS客户端

Linux系统挂载NFS协议文件系统时,需要先安装NFS客户端。确保每台Linux服务器执行一次配置即可,不需要在每次挂载时都执行。

  1. 连接ECS实例。具体连接方式,请参见连接ECS实例

  2. 安装NFS客户端。

    操作系统

    安装命令

    Alibaba Cloud Linux

    sudo yum install nfs-utils

    CentOS

    Redhat

    Ubuntu

    依次执行以下安装命令:

    1. sudo apt-get update
    2. sudo apt-get install nfs-common

    Debian

  3. (可选)设置NFS客户端请求的并发能力。

    请执行以下命令,将客户端的并发请求数量修改为128。更多信息,请参见如何修改同时发起的NFS请求数量?

    if (lsmod | grep sunrpc); then
    (modinfo sunrpc | grep tcp_max_slot_table_entries) && sysctl -w sunrpc.tcp_max_slot_table_entries=128
    (modinfo sunrpc | grep tcp_slot_table_entries) && sysctl -w sunrpc.tcp_slot_table_entries=128
    fi
    (modinfo sunrpc | grep tcp_max_slot_table_entries) && echo "options sunrpc tcp_max_slot_table_entries=128" >> /etc/modprobe.d/sunrpc.conf
    (modinfo sunrpc | grep tcp_slot_table_entries) && echo "options sunrpc tcp_slot_table_entries=128" >> /etc/modprobe.d/sunrpc.conf

步骤二:挂载NFS协议文件系统

Linux操作系统中,NAS NFS协议文件系统支持通过手动挂载和自动挂载两种方式进行挂载。手动挂载适用于临时挂载,每次服务器启动或重启后都需要重新挂载。自动挂载适用于持久挂载,每次服务器启动或重启后都无需重新挂载。为避免服务器重启后,挂载信息丢失,导致无法查看已挂载的文件系统,建议您手动挂载成功后,配置自动挂载文件系统。

手动挂载NFS协议文件系统

您需要使用文件系统的挂载点地址,将NAS NFS协议文件系统挂载至Linux ECS实例。

说明
  • 推荐您通过NFS v3协议挂载文件系统,以获得最佳访问性能。

  • NFS v4.0支持文件锁(包括range lock),如果您需要使用多台Linux ECS实例同时修改一个文件,请使用NFS v4.0协议挂载文件系统。

  • 文件存储NAS支持控制台一键挂载文件系统,提供更加方便、快捷的使用体验。推荐您使用控制台一键挂载功能。具体操作,请参见一键挂载NFS协议文件系统

  1. 挂载NFS协议文件系统。

    • 如果您使用的是通用型NAS,请执行以下命令。

      使用NFS v3协议挂载文件系统

      sudo mount -t nfs -o vers=3,nolock,proto=tcp,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport file-system-id.region.nas.aliyuncs.com:/ /mnt

      使用NFS v4协议挂载文件系统

      sudo mount -t nfs -o vers=4,minorversion=0,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport file-system-id.region.nas.aliyuncs.com:/ /mnt                                
    • 如果您使用的是极速型NAS,请执行以下命令。

      sudo mount -t nfs -o vers=3,nolock,noacl,proto=tcp,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport file-system-id.region.extreme.nas.aliyuncs.com:/share /mnt

    挂载命令参数说明如下表所示。

    参数

    描述

    通用型NAS:file-system-id.region.nas.aliyuncs.com:/ /mnt

    极速型NAS:file-system-id.region.extreme.nas.aliyuncs.com:/share /mnt

    表示<挂载地址>:<NAS文件系统目录> <当前服务器上待挂载的本地路径>,请根据实际情况替换。

    • 挂载地址:您可以在文件存储NAS控制台文件系统列表页面,单击目标文件系统后的管理,进入挂载使用页面获取挂载地址。更多信息,请参见查看挂载点地址

    • NAS文件系统目录

      • 通用型的NAS:根目录(/)或任意子目录(例如:/share)。如果是子目录,请您确保子目录是NAS文件系统中实际已存在的目录。

      • 极速型NAS:必须以/share开头,例如:/share/share/subdir。如果是子目录,请您确保子目录是NAS文件系统中实际已存在的目录。

    • 当前服务器上待挂载的本地路径:Linux ECS实例的任意子目录(例如:/mnt),如果是子目录,请您确保子目录已存在。

      说明

      如果您挂载的本地路径非空,挂载成功后该目录将显示NAS上的数据,本地数据将暂时不可见。建议您使用空目录挂载。

    vers

    文件系统版本。

    • vers=3:使用NFS v3协议挂载文件系统。

    • vers=4:使用NFS v4协议挂载文件系统。

      其中,minorversion为协议次版本号,例如:NAS支持的NFS v4协议版本为4.0,因此使用NFS v4协议挂载文件系统时,次版本号为0。

    说明
    • 通用型NAS:支持NFS v3NFS v4.0。

    • 极速型NAS:只支持NFS v3,不支持NFS v4。

    rsize

    • 定义数据块的大小,用于客户端与文件系统之间读取数据。

    • 建议值:1048576。

    wsize

    • 定义数据块的大小,用于客户端与文件系统之间写入数据。

    • 建议值:1048576。

    hard

    • 如果参数未启用,当文件存储NAS不可用时,客户端可能会立即返回错误,而不进行重试,这可能会导致数据的不一致性或丢失。

    • 建议启用该参数。

    timeo

    • 指定时长,单位为0.1秒,即NFS客户端在重试向文件系统发送请求之前等待响应的时间。

    • 建议值:600(60秒)。

    retrans

    • NFS客户端重试请求的次数。

    • 建议值:2。

    noresvport

    • 在网络重连时使用新的TCP端口,保障在网络发生故障恢复时不会中断连接。

    • 建议启用该参数。

    说明
    • 如果您必须更改超时参数(timeo),建议您使用150或更大的值。该timeo参数的单位为0.1秒,因此150表示的时间为15秒。

    • 如果您需要更改IO大小参数(rsizewsize),建议您尽可能使用最大值(1048576),以避免性能下降。

    • rsize、wsizehardtimeoretransnoresvport这些参数都是非必选挂载参数,您可以根据实际情况进行选择。在挂载时,请使用半角逗号进行分隔。

    重要
    • 不建议使用soft选项,有数据一致性风险。如果您要使用soft选项,相关风险需由您自行承担。

    • 避免设置不同于默认值的任何其他挂载选项。如果更改读或写缓冲区大小或禁用属性缓存,可能会导致性能下降。

  2. 验证挂载结果。

    • 执行命令

      mount -l
    • 返回示例

      如果返回信息包含如下类似信息,说明挂载成功。查看挂载结果

      挂载成功后,您还可以执行df -h命令,查看当前文件系统的容量信息。df-h

    如果挂载失败,请进行错误排查。具体操作,请参见挂载文件系统失败故障排查

  3. 挂载成功后,您可以在Linux ECS上访问NAS文件系统,执行读取或写入操作。

    您可以把NAS文件系统当作一个普通的目录来访问和使用,示例如下:读写操作

(可选)自动挂载NFS协议文件系统

您可以通过配置Linux ECS实例的/etc/fstab文件,实现ECS重启时自动挂载NFS协议文件系统。

说明

在配置自动挂载前,请先确认手动挂载成功,避免ECS启动失败。

  1. 如果您使用的是极速型NAS,请执行以下命令。

    如果您使用的是通用型NAS,请跳过此步骤,直接执行步骤2

    vi /etc/systemd/system/sockets.target.wants/rpcbind.socket

    打开/etc/systemd/system/sockets.target.wants/rpcbind.socket文件后,需要注释IPv6相关的rpcbind参数(如下图所示),否则NFSrpcbind服务自动启动会失败。注释rpcbind参数

    如果您是在CentOS 6.x系统中配置自动挂载,您还需执行以下操作。

    1. 执行chkconfig netfs on命令,确保netfs服务开机自启动。

    2. 打开/etc/netconfig配置文件,注释掉inet6相关的内容(如下图所示)。注释inet6相关内容

  2. 打开/etc/fstab配置文件,添加挂载配置。

    通用型NAS

    • 使用NFS v3协议挂载文件系统:

      file-system-id.region.nas.aliyuncs.com:/ /mnt nfs vers=3,nolock,proto=tcp,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,_netdev,noresvport 0 0
    • 使用NFS v4协议挂载文件系统:

      file-system-id.region.nas.aliyuncs.com:/ /mnt nfs vers=4,minorversion=0,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,_netdev,noresvport 0 0

    极速型NAS

    file-system-id.region.extreme.nas.aliyuncs.com:/share /mnt nfs vers=3,nolock,noacl,proto=tcp,noresvport,_netdev 0 0
    说明

    如果您是在CentOS 6.x系统中配置自动挂载,您需先执行chkconfig netfs on命令,确保netfs服务开机自启动。

    示例中主要参数说明,请参见挂载命令参数说明表。其余参数说明如下。

    参数

    说明

    _netdev

    防止客户端在网络就绪之前开始挂载文件系统。

    0(noresvport后第一项)

    非零值表示文件系统应由dump备份。对于NAS文件系统而言,此值默认为0。

    0(noresvport后第二项)

    该值表示fsck在启动时检查文件系统的顺序。对于NAS文件系统而言,此值默认为0,表示fsck不应在启动时运行。

  3. 执行以下命令,配置开机启动文件/etc/rc.local。

    [ ! -f /etc/rc.local ] && echo '#!/bin/bash' > /etc/rc.local; 
    echo "for ((i=1; i<=10; i++)); do if ping -c 1 -W 3 aliyuncs.com; then break; else sleep 1; fi; done" >> /etc/rc.local;
    echo "sleep 3; mount -a -t nfs" >> /etc/rc.local; 
    chmod +x /etc/rc.local
  4. 执行reboot命令,重启云服务器ECS。

    重要

    重启云服务器会中断业务,建议您在业务低谷时期重启云服务器。

  5. 验证自动挂载配置成功。

    ECS重启后的一分钟内,执行df -h命令,确认挂载的NAS文件系统。

常见问题

相关文档